#include <stdio.h>
#include <pthread.h>
#include <unistd.h>


void *task(void *arg)
{
    printf("task线程开始\n");
    sleep(3);
    printf("task线程sleep之后结束\n");
    return NULL;
}

int main(int argc, char const *argv[])
{
    //主线程开始
    printf("main thread start\n");

    //创建子线程
    pthread_t tid;
    pthread_create(&tid, NULL, task, NULL);

    //主线程取消子线程
    pthread_cancel(tid);

    //主线程等待子线程结束
    void *result;
    pthread_join(tid, &result);
    if(result == PTHREAD_CANCELED)
    {
        printf("分线程被取消结束\n");
    }
    else
    {
        printf("分线程正常结束\n");
    }

    printf("主线程结束\n");
    return 0;
}